
######################################################################

# Makefile for LAME 3.88beta using gcc 2.95.2
#   (Last modification date: 31 May 2001)

######################################################################

#   Useful options:


#   Switches on VBR bitrate histogram display
#     (needs either ncurses or libtermcap):
#BRHIST_SWITCH = -DBRHIST
#LIBTERMCAP = -lncurses
#LIBTERMCAP = -ltermcap


#   Choice of file import routines:
#     You can use either LAME's simple internal file i/o,
#     or libsndfile from http://www.zip.com.au/~erikd/libsndfile/
#SNDLIB = -DLAMESNDFILE
SNDLIB = -DLIBSNDFILE -Ilibsndfile
#   If compiling with libsndfile, this gives its location:
LIBSNDFILE = -llibsndfile.libsndfile


#   Compiler flags optimising for ARM7500FE:
ARMCPUOPTS = -mtune=arm7500fe -mcpu=arm7500fe -DFPA10


#   If set, links some hand-modified assembler files instead of
#     compiling their C equivalents.
ARMFE = _arm_fe

######################################################################

CC = gcc
LINK = gcc
AS = as
MAKE = make
AS_FLAGS = -gcc -target ARM7M
CC_SWITCHES = -IUnix: -I. -DHAVE_MPGLIB -DLAMEPARSE -DNOANALYSIS -DHAVE_CONFIG_H
LIBS = -lUnix:o.UnixLib

# 10/99 added -D__NO_MATH_INLINES to fix a bug in *all* versions of
# gcc 2.8+ as of 10/99.  

CC_FLAGS = -DNDEBUG -D__NO_MATH_INLINES \
  -fomit-frame-pointer -fno-strength-reduce -finline-functions -O3 \
  -fexpensive-optimizations -funroll-all-loops -ffast-math -mfp=3 \
  -mapcs-32 -mno-poke-function-name -mno-short-load-bytes \
  -fno-keep-inline-functions -fno-keep-static-consts -fcaller-saves \
  $(CC_SWITCHES) $(ARMCPUOPTS) $(SNDLIB) $(BRHIST_SWITCH) $(DEVOPTS)


OBJLAME = \
   riscosasm.o \
   ylib.o \
   frontend/portableio.o \
   frontend/get_audio.o \
   frontend/parse.o \
   frontend/timestatus.o \
   frontend/lametime.o \
   frontend/brhist.o \
   frontend/main.o \
   libmp3lame/lamelib \
   mpglib/mpglib

OBJLAMELIB = \
   libmp3lame/bitstream.o \
   libmp3lame/encoder.o \
   libmp3lame/fft.o \
   libmp3lame/id3tag.o \
   libmp3lame/lame.o \
   libmp3lame/newmdct$(ARMFE).o \
   libmp3lame/psymodel.o \
   libmp3lame/quantize.o \
   libmp3lame/quantize_pvt.o \
   libmp3lame/set_get.o \
   libmp3lame/vbrquantize.o \
   libmp3lame/reservoir.o \
   libmp3lame/tables.o \
   libmp3lame/takehiro.o \
   libmp3lame/util.o \
   libmp3lame/mpglib_interface.o \
   libmp3lame/VbrTag.o \
   libmp3lame/version.o

OBJMPGLIB = \
   mpglib/common.o \
   mpglib/dct64_i386.o \
   mpglib/decode_i386.o \
   mpglib/layer1.o \
   mpglib/layer2.o \
   mpglib/layer3.o \
   mpglib/tabinit.o \
   mpglib/interface.o

.c.o:
 $(CC) $(CC_FLAGS) -S -o ${*D}/s/${*F} $<
 $(AS) $(AS_FLAGS) -o $@ ${*D}/s/${*F}

.s.o: $(AS) $(AS_FLAGS) -o $@ $<


lame: lamedirs $(OBJLAME)
 $(LINK) -mstubs $(LIBS) $(LIBSNDFILE) $(OBJLAME) -o lamefe

# -ifthere libmp3lame.o.fft$(ARMNOFP)           then delete libmp3lame.o.fft$(ARMNOFP)
# -ifthere libmp3lame.o.psymodel$(ARMNOFP)      then delete libmp3lame.o.psymodel$(ARMNOFP)
# -ifthere libmp3lame.o.quantize$(ARMNOFP)      then delete libmp3lame.o.quantize$(ARMNOFP)
# -ifthere libmp3lame.o.quantize_pvt$(ARMNOFP)  then delete libmp3lame.o.quantize_pvt$(ARMNOFP)
 -ifthere libmp3lame.o.newmdct$(ARMNOFP)       then delete libmp3lame.o.newmdct$(ARMNOFP)$(ARMFE)
# -ifthere libmp3lame.o.takehiro$(ARMNOFP)      then delete libmp3lame.o.takehiro$(ARMNOFP)
# -ifthere libmp3lame.o.vbrquantize$(ARMNOFP)   then delete libmp3lame.o.vbrquantize$(ARMNOFP)

 -ifthere run:squeeze then squeeze lamefe


libmp3lame/lamelib: lamelibdirs $(OBJLAMELIB)
 drlink -aof libmp3lame.o.* -o libmp3lame.lamelib

mpglib/mpglib: mpglibdirs $(OBJMPGLIB)
 drlink -aof mpglib.o.* -o mpglib.mpglib

lamedirs:
 -cdir frontend.o
 -cdir frontend.s

lamelibdirs:
 -cdir libmp3lame.o
 -cdir libmp3lame.s

mpglibdirs:
 -cdir mpglib.o
 -cdir mpglib.s
